package com.itany.controller;


import com.itany.common.ResponseResult;
import com.itany.entity.User;
import com.itany.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@CrossOrigin("*")
@RestController
public class UserController {
    @Autowired
    UserService userService;
    //登录
    @PostMapping("users/login")
    public ResponseResult<User> login(@RequestBody User user) {
        System.out.println("Received user: " + user.getName() + ", " + user.getPwd());
        User loginUser = userService.login(user);
        if (loginUser != null) {
            return ResponseResult.success(loginUser);
        } else {
            return ResponseResult.fail("登录失败，用户名或密码错误");
        }
    }

    //注册
    @PostMapping ("users/registe")
    public ResponseResult<String> registe(User user) {
        String result = userService.registUser(user);
        if ("注册成功".equals(result)) {
            return ResponseResult.success(result);
        } else {
            return ResponseResult.fail(result);
        }
    }
    //添加用户
//    @GetMapping("user/addUser")
//    public ResponseResult<String> addUser(User user){
//
//        return ResponseResult.success(result);
//    }



    //所有用户
    @GetMapping("users/showAllUsers")
    public ResponseResult<List<User>> showAllUsers() {
        List<User> users = userService.showUsers();
        return ResponseResult.success(users);
    }

    //修改个人信息
//    *需求:修改用户信息，根据用户名修改用户密码
//    *1、请求路径:/users
//    *2、请求方式:put
//    *3、请求参数: User("name","pwd")
//    *4、响应数据:String

    @PutMapping("users/updateUser")
    //@RequestMapping(value="/users",method=RequestMethod.PUT)
    public ResponseResult<User> updateUser(User user){
        System.out.println("updateUser");
        // 调用业务层的修改用户信息的方法
        User newUser = userService.updateUser(user);
        if (newUser != null) {
            return ResponseResult.success(newUser);
        } else {
            return ResponseResult.fail("用户不存在");
        }
    }
//查询指定姓名的用户
        /*
        需求:查询指定用户
        *1、请求路径: /users
        *2、请求方式: get
        *3、请求参数: name
        * 4、响应数据:Userjson格式
        */
        @GetMapping("users/ZdUser")
    public ResponseResult<User> detail(String name){
            User user=userService.searchUserByName(name);
            if (user != null) {
                return ResponseResult.success(user);
            } else {
                return ResponseResult.fail("未找到指定用户");
            }

        }
        /*删除用户
        需求:删除用户信息，根据用户名和密码删除用户
        1、请求路径: /users
        *2、请求方式: delete
        *3、请求参数: User("name","pwd")
        *4、响应数据:User 是否更新成功
        */

    @DeleteMapping("users/deleteUser")
    public ResponseResult<User> delete(User user){
        //调用业务层的方法
        boolean f=userService.deleteUser(user);
        if(f){
            return ResponseResult.success(user);
        }else{
            return ResponseResult.fail("删除失败");
        }

    }
}